Considere o banco de dados de COVID-19 visto na Aula 6. Os dados correspondem ao número de casos diários no período de fevereiro de 2020 a dezembro de 2020, juntamente com outras variáveis, para os municípios do Rio de Janeiro.
Os dados estão no arquivo covid2.csv. Além disso, considere o mapa do estado do Rio de Janeiro no arquivo rio.json.
Importe a base de dados, assim como o mapa (utilizando o pacote rgdal), para o R. Em seguida, calcule as médias moveis (considerando 15 dias) do número de casos (new confirmed) do dia 20 de dezembro de 2020 (último dia da base) para cada município.
Crie um data frame com as médias móveis, nomes (city) e códigos (city IBGE code) dos municípios. Em seguida, utilize os códigos para juntar o data frame ao mapa por meio da função merge.
Faça um mapa coroplético interativo, utilizando a função leaflet, em que as cores dos municípios estejam associadas as medias móveis. Utilize as cores associadas a divisão feita pelos quartis. Há algum padrão espacial aparente?
A atividade deve ser feita no RMarkdown e entregue em HTML com os códigos explicitados e as análises comentadas. Os gráficos devem ser explicativos, com nomes corretos nos eixos, por exemplo.
Lembrando que a entrega desta atividade e opcional, uma vez que a menor nota (considerando as 4 atividades) será desconsiderada no cálculo da média.
library(leaflet)
library(animation)
library(png)
library(htmlwidgets)
library(webshot)
library(ggmap)
library(magick)
library(magrittr)
library(sf)
library(geobr)
library(tidyverse)
library(zoo)
#install_phantomjs(version = "2.1.1",
# baseURL = "https://github.com/wch/webshot/releases/download/v0.3.1/",
# force = FALSE)
Folder<-"C:\\Users\\Marcel\\Dropbox\\00-Ciencias-de-Dados\\M02_Mineracao\\Atividades\\ATV04_M02_Mineracao"
setwd(Folder)
covid<-read.csv("covid2.csv")
covidM<-aggregate(covid$new_confirmed,by=list(City=covid$city,
Code_ibge=covid$city_ibge_code,
Date=covid$date),FUN="sum")
covidM<-covidM %>%
arrange(Date)%>%
arrange(City)%>%
group_by(City)%>%
mutate(mean_15=rollmean(x, 15, align="right",fill=0))
shp<-read_municipality(code_muni = "RJ", year= 2018)
shp2<-left_join(shp,covidM, by = c("code_muni"="Code_ibge"))
cores <- colorQuantile(heat.colors(5),NULL, reverse = T)
a<-unique(shp2$Date)
a<-as.Date(a,"%Y-%m-%d")
lag<-length(unique(shp2$Date))
for (i in (lag-120):lag){
aux<- shp2[shp2$Date==a[i],]
if (length(aux$City==92)){
map<-leaflet(aux)%>%
addProviderTiles(provider = providers$CartoDB.Positron)%>%
addPolygons(weight=0.5,
color="black",
label=~paste0(City,": ",round(mean_15,2)),
fillColor = ~cores(mean_15),
smoothFactor=0.5,
opacity=0.8,
fillOpacity=0.5,
highlightOptions=highlightOptions(color="white",weight=5,bringToFront=TRUE))%>%
leaflet::addLegend(pal=cores,values=~mean_15,opacity=0.5,
title = paste(format(a[i],"%d %b %Y"),
"<br><br>Média Móvel<br>15 dias"))
saveWidget(map, 'temp.html', selfcontained = FALSE)
webshot('temp.html', file=sprintf('MapaGif\\Rplot%02d.png', i),
cliprect = 'viewport')
}
}
list.files(path=paste0(Folder,"\\MapaGif"), pattern = '*.png', full.names = TRUE) %>%
image_read() %>% # reads each path file
image_join() %>% # joins image
image_animate(fps=2, optimize = TRUE) %>% # animates, can opt for number of loops
image_write("images\\mapa.gif") # write to current dir---
title: "Atividade 04 - Mineração de Dados"
author: "Marcel Dantas de Quintela"
date: "`r format(Sys.time(), '%d de %B de %Y') `"
lang: "pt-br"
output:
flexdashboard::flex_dashboard:
#orientation: rows
social: menu
source_code: embed
---
# Instruções
## Column
Considere o banco de dados de COVID-19 visto na Aula 6. Os dados correspondem ao número de casos diários no período de fevereiro de 2020 a dezembro de 2020, juntamente com outras variáveis, para os municípios do Rio de Janeiro.
Os dados estão no arquivo *covid2.csv*. Além disso, considere o mapa do estado do Rio de Janeiro no arquivo *rio.json*.
1. Importe a base de dados, assim como o mapa (utilizando o pacote `rgdal`), para o `R`. Em seguida, calcule as médias moveis (considerando 15 dias) do número de casos (*new confirmed*) do dia 20 de dezembro de 2020 (último dia da base) para cada município.
2. Crie um data frame com as médias móveis, nomes (city) e códigos (city IBGE code) dos municípios. Em seguida, utilize os códigos para juntar o data frame ao mapa por meio da função `merge`.
3. Faça um mapa coroplético interativo, utilizando a função `leaflet`, em que as cores dos municípios estejam associadas as medias móveis. Utilize as cores associadas a divisão feita pelos quartis. Há algum padrão espacial aparente?
A atividade deve ser feita no `RMarkdown` e entregue em `HTML` com os códigos explicitados e as análises comentadas. Os gráficos devem ser explicativos, com nomes corretos nos eixos, por exemplo.
Lembrando que a entrega desta atividade e opcional, uma vez que a menor nota (considerando as 4 atividades) será desconsiderada no cálculo da média.
# Execução {data-orientation="columns"}
## Column
```{r setup, include=FALSE, warning=FALSE, message=FALSE}
# library(highcharter)
# library(dplyr)
# library(viridisLite)
# library(forecast)
# library(treemap)
# library(flexdashboard)
#rm(list=ls())
knitr::opts_chunk$set(
echo = FALSE,
message = FALSE,
warning = FALSE)
setwd("C:\\Users\\Marcel\\Dropbox\\00-Ciencias-de-Dados\\M02_Mineracao\\Atividades\\ATV04_M02_Mineracao")
# instalação de pacotes
.packages = c("flexdashboard",
"highcharter",
"tidyverse",
"rgdal",
"leafgl",
"sf",
"geobr",
"leaflet",
"dygraphs",
"xts",
"devtools")# Lista de bibliotecas necessárias
# Instalar (caso ainda não tenha sido instalado)
.inst <- .packages %in% installed.packages()
if(length(.packages[!.inst]) > 0) install.packages(.packages[!.inst],dependencies = TRUE)
# Carregando bibliotecas
lapply(.packages, require, character.only=TRUE)
thm <-
hc_theme(
colors = c("#1a6ecc", "#434348", "#90ed7d"),
chart = list(
backgroundColor = "transparent",
style = list(fontFamily = "Source Sans Pro")
),
xAxis = list(
gridLineWidth = 1
)
)
```
```{r}
covid<-read.csv("covid2.csv")
```
```{r}
# subset de novos casos diários por município de RJ
covidM<-aggregate(covid$new_confirmed,by=list(City=covid$city,
Code_ibge=covid$city_ibge_code,
Date=covid$date),FUN="sum")
# subset de novos casos diáriso para o Estad do RJ
covidE <- aggregate(covid$new_confirmed,by=list(Date=covid$date),FUN="sum")
```
```{r}
# Média móvel por Municpipio ordenado por data em cada município
covidM<-covidM %>%
arrange(Date)%>%
arrange(City)%>%
group_by(City)%>%
mutate(mean_15=rollmean(x, 15, align="right",fill=0))
#Média móvel para todo o estado
covidE<-covidE %>%
arrange(Date) %>%
mutate(mean_15=rollmean(x, 15, align="right",fill=0))
covidE$Date<-as.Date(covidE$Date,"%Y-%m-%d")
```
### Estado
```{r}
graf <- xts(x = covidE[,2:3], order.by = covidE$Date)
dygraph(graf,
main="Média Móvel de Novos Casos x Dia no Estado do Rio de Janeiro",
ylab="Novos Casos",
xlab="Dias") %>%
dyRangeSelector() %>%
dyBarSeries('x') %>%
dyFilledLine('mean_15')
```
### Mapa Municípios do Rio de Janeiro
```{r include=FALSE}
## Mapa Média Móvei por Município
# base<-readOGR("http://im.ufrj.br/~joao/cienciadedados/rio.json")
# plot(base)
# mapa<-merge(x=covidM,y=base,by.x="Code_ibge",by.y="id")
# problemas não identificado com a base .jason
# download dos municípios do Rio de Janeiro usando geobr
shp<-read_municipality(code_muni = "RJ", year= 2018)
# usando a última média móvel
covid_last<-covidM[covidM$Date==covidM$Date[(length(covidM$Date))],]
covid_last$Date<-as.Date(covid_last$Date,"%Y-%m-%d")
#merge
shp<-left_join(shp,covid_last, by = c("code_muni"="Code_ibge"))
cores <- colorQuantile(heat.colors(5),NULL, reverse = T)
```
```{r}
leaflet(shp)%>%
addProviderTiles(provider = providers$CartoDB.Positron)%>%
addPolygons(weight=0.5,
color="black",
label=~paste0(City,": ",round(mean_15,2)),
fillColor = ~cores(mean_15),
smoothFactor=0.5,
opacity=0.8,
fillOpacity=0.5,
highlightOptions=highlightOptions(color="white",weight=5,bringToFront=TRUE))%>%
leaflet::addLegend(pal=cores,values=~mean_15,opacity=0.5,
title = paste(format(shp$Date[1],"%d %b %Y"),
"
Média Móvel
15 dias"))
```
## Column
### Evolução do Casos

# Código .gif {data-vertical_layout=scroll}
```{r eval=F, echo=T}
library(leaflet)
library(animation)
library(png)
library(htmlwidgets)
library(webshot)
library(ggmap)
library(magick)
library(magrittr)
library(sf)
library(geobr)
library(tidyverse)
library(zoo)
#install_phantomjs(version = "2.1.1",
# baseURL = "https://github.com/wch/webshot/releases/download/v0.3.1/",
# force = FALSE)
Folder<-"C:\\Users\\Marcel\\Dropbox\\00-Ciencias-de-Dados\\M02_Mineracao\\Atividades\\ATV04_M02_Mineracao"
setwd(Folder)
covid<-read.csv("covid2.csv")
covidM<-aggregate(covid$new_confirmed,by=list(City=covid$city,
Code_ibge=covid$city_ibge_code,
Date=covid$date),FUN="sum")
covidM<-covidM %>%
arrange(Date)%>%
arrange(City)%>%
group_by(City)%>%
mutate(mean_15=rollmean(x, 15, align="right",fill=0))
shp<-read_municipality(code_muni = "RJ", year= 2018)
shp2<-left_join(shp,covidM, by = c("code_muni"="Code_ibge"))
cores <- colorQuantile(heat.colors(5),NULL, reverse = T)
a<-unique(shp2$Date)
a<-as.Date(a,"%Y-%m-%d")
lag<-length(unique(shp2$Date))
for (i in (lag-120):lag){
aux<- shp2[shp2$Date==a[i],]
if (length(aux$City==92)){
map<-leaflet(aux)%>%
addProviderTiles(provider = providers$CartoDB.Positron)%>%
addPolygons(weight=0.5,
color="black",
label=~paste0(City,": ",round(mean_15,2)),
fillColor = ~cores(mean_15),
smoothFactor=0.5,
opacity=0.8,
fillOpacity=0.5,
highlightOptions=highlightOptions(color="white",weight=5,bringToFront=TRUE))%>%
leaflet::addLegend(pal=cores,values=~mean_15,opacity=0.5,
title = paste(format(a[i],"%d %b %Y"),
"
Média Móvel
15 dias"))
saveWidget(map, 'temp.html', selfcontained = FALSE)
webshot('temp.html', file=sprintf('MapaGif\\Rplot%02d.png', i),
cliprect = 'viewport')
}
}
list.files(path=paste0(Folder,"\\MapaGif"), pattern = '*.png', full.names = TRUE) %>%
image_read() %>% # reads each path file
image_join() %>% # joins image
image_animate(fps=2, optimize = TRUE) %>% # animates, can opt for number of loops
image_write("images\\mapa.gif") # write to current dir
```